//package com.junction;
//
//import org.bytedeco.javacpp.opencv_core.Mat;
//import org.bytedeco.javacv.FrameGrabber;
//import org.bytedeco.javacv.OpenCVFrameGrabber;
//import org.bytedeco.javacv.VideoFrameGrabber;
//import org.bytedeco.javacv.FFmpegFrameRecorder;
//import org.bytedeco.javacv.FrameRecorder;
//import org.bytedeco.javacv.FrameRecorder.Exception;
//import java.awt.image.BufferedImage;
//import java.io.File;
//import java.io.IOException;
//import java.util.concurrent.TimeUnit;
//
//public class ScreenRecorder {
//    private FrameGrabber grabber;
//    private FrameRecorder recorder;
//    private File outputFile;
//
//    public ScreenRecorder(String outputFile) {
//        try {
//            // 创建一个FFmpegFrameRecorder对象，用于将视频流保存为MP4文件
//            this.recorder = new FFmpegFrameRecorder(outputFile, 1280, 720, 30);
//            this.recorder.setVideoCodec("libx264");
//            this.recorder.setAudioCodec("aac");
//            this.recorder.setFormat("mp4");
//            this.recorder.setFrameRate(30);
//            this.recorder.setVideoBitrate(1000000);
//            this.recorder.setAudioBitrate(128000);
//            this.recorder.setVideoQuality(0);
//            this.recorder.setInterleaved(true);
//            this.recorder.start();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    public void start() {
//        try {
//            // 创建一个OpenCVFrameGrabber对象，用于从本机电脑屏幕采集视频流
//            this.grabber = new OpenCVFrameGrabber(0);
//            this.grabber.start();
//
//            // 创建一个BufferedImage对象，用于临时存储采集的视频帧
//            BufferedImage image = new BufferedImage(1280, 720, BufferedImage.TYPE_INT_RGB);
//
//            while (true) {
//                // 获取采集的视频帧
//                Mat frame = grabber.grab();
//
//                // 将采集的视频帧转换为BufferedImage对象
//                frame.toBufferedImage(image, true);
//
//                // 将BufferedImage对象转换为FFmpegFrameRecorder对象需要的类型
//                Mat frameToRecord = new Mat(image.getHeight(), image.getWidth(), Mat.ofOrder(image.getType()));
//                frameToRecord.put(0, 0, image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth()));
//
//                // 将采集的视频帧记录到MP4文件中
//                recorder.record(frameToRecord);
//                recorder.writeHeader();
//
//                // 等待1分钟，然后生成新的MP4文件
//                TimeUnit.MINUTES.sleep(1);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                // 关闭FFmpegFrameRecorder对象，停止记录视频流
//                recorder.stop();
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//            try {
//                // 关闭FrameGrabber对象，停止采集视频流
//                grabber.stop();
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//    }
//}